"""
ASGI config for travel project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
"""

import os
# 从 Django 框架的核心模块（django.core）下的 asgi 子模块中导入 get_asgi_application 函数。
# 这个函数是 Django 提供的用于获取 ASGI 应用可调用对象的关键函数，通过调用它可以得到一个符合 ASGI 规范的应用对象，
# 该对象能与 ASGI 服务器进行对接，处理进入的 HTTP 请求等相关操作。
from django.core.asgi import get_asgi_application
# 设置 Django 项目的配置模块环境变量。os.environ 是一个表示系统环境变量的字典，
# setdefault 方法会先检查指定的环境变量（这里是 DANGO_SETTINGS_MODULE）是否已经存在，如果不存在，就将其设置为给定的值（'travel.settings'）。
# 在 Django 项目中，travel.settings 通常指向一个 Python 模块（一般是 settings.py 文件所在的模块路径），
# 这个模块里包含了项目的各种配置信息，例如数据库连接配置、静态文件配置、中间件配置、已安装应用的配置等等。
# 通过设置这个环境变量，Django 框架就能准确地找到并加载对应的项目配置，确保项目能够按照预期的设置正常运行。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'travel.settings')
# 调用 get_asgi_application 函数来获取符合 ASGI 规范的应用可调用对象，并将其赋值给名为 application 的变量。
# 这个变量是在模块级别定义的，按照 ASGI 的规范要求，外部的 ASGI 服务器（例如在部署项目时使用的服务器软件）
# 在启动时会查找名为 application 的可调用对象，以此来与 Django 项目建立连接，将接收到的网络请求传递给 Django 进行处理，
# 然后再将 Django 处理后的响应返回给客户端。
# 简单来说，这个 application 对象就是 Django 项目与外部 ASGI 服务器之间交互的接口，使得整个 Web 应用能够在 ASGI 服务器的支持下对外提供服务。
application = get_asgi_application()
